//
//  IMLoginModels.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/6/23.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * 登录请求模型
 */
@interface IMLoginRequest : NSObject

/**
 * 应用ID（必选）
 */
@property (nonatomic, strong) NSString *app_id;

/**
 * iOS设备唯一标识（必选）
 */
@property (nonatomic, strong) NSString *ios_uuid;

/**
 * 地区代码（可选）
 */
@property (nonatomic, strong, nullable) NSString *country_code;

/**
 * 便利构造方法
 * @param appId 应用ID
 * @param iosUuid iOS设备唯一标识
 * @param countryCode 地区代码（可选）
 */
+ (instancetype)requestWithAppId:(NSString *)appId 
                        iosUuid:(NSString *)iosUuid 
                    countryCode:(NSString * _Nullable)countryCode;

/**
 * 转换为请求参数字典
 */
- (NSDictionary *)toDictionary;

@end

/**
 * 登录响应数据模型
 */
@interface IMLoginResponseData : NSObject

/**
 * 用户唯一ID
 */
@property (nonatomic, strong) NSString *uuid;

/**
 * 注册时间戳
 */
@property (nonatomic, strong) NSString *reg_ts;

/**
 * 从字典创建实例
 * @param dictionary 响应数据字典
 */
+ (instancetype)dataFromDictionary:(NSDictionary *)dictionary;

@end

/**
 * 登录响应模型
 */
@interface IMLoginResponse : NSObject

/**
 * 响应状态码
 */
@property (nonatomic, assign) NSInteger code;

/**
 * 响应消息
 */
@property (nonatomic, strong) NSString *message;

/**
 * 响应数据
 */
@property (nonatomic, strong, nullable) IMLoginResponseData *data;

/**
 * 是否成功
 */
@property (nonatomic, assign, readonly) BOOL isSuccess;

/**
 * 从字典创建实例
 * @param dictionary 响应字典
 */
+ (instancetype)responseFromDictionary:(NSDictionary *)dictionary;

@end

NS_ASSUME_NONNULL_END